#ifndef CROSSOVERWORKER_H_
#define CROSSOVERWORKER_H_

#include "../Worker.h"
#include "../../Crossover/Crossover.h"
#include "../../Job/Crossover/CrossoverJob.h"

/** Base class for all crossover workers.  Crossover workers should be run
 * within a thread, any implementation of a crossover worker should inherit from
 * this class.
 */
class CrossoverWorker : public Worker
{
    public:
        CrossoverWorker();
        void setCrossover(Crossover *);      /**< Tells the worker which crossover object to use to perform the crossover */
        CrossoverJob *getJob() const;        /**< Returns the worker's job                                                */
        
        virtual void run() = 0;              /**< Run function, pure virtual                                              */
        
    protected:
        Crossover *crossover;                /**< Pointer to the crossover object being used                              */
        CrossoverJob *cJob;                  /**< Pointer to the current job being processed                              */
};

#endif /*LOCALCROSSOVERWORKER_H_*/
